///
/// 合集: Rust 编程之旅
/// 博主: 深夜飚键盘 (shenyekey)
/// 平台: 抖音、B站、微信, 关注一下啦
/// 键轴: 青轴
/// 当前: rust_demo_38
///
/// 单元测试 
/// 目的是在与其他部分隔离的环境中测试每一个单元的代码
/// 以便快速准确的验证某个单元的代码功能是否符合预期
/// 
/// 1. 单元测试与它们要测试的代码共同存放于 src 目录下，可以相同的文件中
/// 2. 每个文件中创建包含测试函数的 tests 模块，并使用 cfg(test) 标注模块
/// 
/// #[cfg(test)] 注解，告诉 rust 只在执行 cargo test 时，才进行编译和运行
/// 测试代码


// 例子 

fn add(x:i32 , y:i32) ->i32 {
    x + y
}

// 如果有其他模块，比如 utils
// 只有声明用了，才会执行
mod utils;

fn main() {
    println!("Hello, world!");
}

// 测试模块
// 重点就是给每个模块实现一个 测试模块
// 用于单元测试

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_add(){
        assert_eq!(add(1, 1),2);
    }
}


